/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import controllers.mysqlconnector.ConexionBD;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import models.Funcion;

/**
 *
 * @author alex
 */
public class Funciones extends ConexionBD {
    
    public List<String> getFuncion() {
        super.realizarConexion();
        consulta = "select * from funcion";
        regreso = super.realizarConsulta(consulta);
        List<String> funciones = new ArrayList<>();
        try {
            while (regreso.next()) {
                String funcion = regreso.getString("idfuncion");
                funciones.add(funcion);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Peliculas.class.getName()).log(Level.SEVERE, null, ex);
        }

        try {
            regreso.close();
        } catch (SQLException ex) {
            Logger.getLogger(Peliculas.class.getName()).log(Level.SEVERE, null, ex);
        }

        System.out.println(funciones);
        return funciones;
    }

    public Funcion crearFuncion(String idSala, 
                String idPelicula, int hora) {
        consulta = "insert into funcion(idSala,idPelicula,hora) "
                + ""
                + "values ("+idSala+","+idPelicula+","+hora+");";
        super.realizarActualizacion(consulta);
        
        return null;
    }
    public Boolean checarDisponibilidad(int hora, String nomPelicula, String idSala){
        try {
            ResultSet rs;
            consulta = "select idFuncion from funcion where hora="+hora+" and idSala="+idSala+";";
            regreso = super.realizarConsulta(consulta);
            if(regreso.next()){
                rs = super.realizarConsulta("select idfuncion from "
                        + "funcion where hora="+(hora-2)+" and idSala="+idSala+";");
                regreso = super.realizarConsulta("select idfuncion from "
                        + "funcion where hora="+(hora-1)+" and idSala="+idSala+";");
                if(rs.next() || regreso.next()){
                    rs = super.realizarConsulta("select idfuncion from "
                            + "funcion where hora="+(hora+2)+" and idSala="+idSala+";");
                    regreso = super.realizarConsulta("select idfuncion "
                            + "from funcion where hora="+(hora+1)+" and idSala="+idSala+";");
                    if(rs.next() || regreso.next()){
                        JOptionPane.showMessageDialog(null, "Lo sentimos "
                                + "no existe disponibilidad a la hora solicitada, "
                                + "asi como no existe para\n dos horas antes ni "
                                + "dos horas despues.");
                        return false;
                        
                    }else{
                        JOptionPane.showMessageDialog(null, "Existe disponibilidad"
                                + " en dos horas mas");
                        return false;
                    }
                }else{
                   JOptionPane.showMessageDialog(null, "Existe disponibilidad dos horas antes");
                   return false;
                }
            }else{
                rs = super.realizarConsulta("select idfuncion from funcion where hora="+(hora-1)+" and idSala="+idSala+";");
                regreso = super.realizarConsulta("select idfuncion from funcion where hora="+(hora+1)+" and idSala="+idSala+";");
                if(rs.next() || regreso.next()){
                    JOptionPane.showMessageDialog(null, "No existe disponibilidad de horario");
                    return false;
                }else{
                    return true;
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(Funciones.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }
    
    public void borrarFuncion(String idFuncion){
        consulta = "delete from funcion where idfuncion ="+idFuncion+";";
        realizarActualizacion(consulta);
    }
    
}
